// 最长重复子数组

// 给两个整数数组 nums1 和 nums2 ，返回 两个数组中 公共的 、长度最长的子数组的长度。

// 示例 1：
// 输入：nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7]
// 输出：3
// 解释：长度最长的公共子数组是 [3,2,1] 。

// 示例 2：
// 输入：nums1 = [0,0,0,0,0], nums2 = [0,0,0,0,0]
// 输出：5
 
function findLength (nums1, nums2) {
  let max = 0;
  // 滑动窗口
  // 遍历 nums1 中的每个数字
  for (let i = 0; i < nums1.length; i++) {
    // 遍历 nums2 中的每个数字
    for (let j = 0; j < nums2.length; j++) {
      // 如果 nums1[i] 等于 nums2[j]，则说明当前数字是公共的
      if (nums1[i] === nums2[j]) {
        // 记录当前公共子数组的长度
        let len = 0;
        // 从当前位置开始，比较 nums1 和 nums2 中的数字是否相等
        // 如果相等，len 加 1
        // 如果不相等，或者超出了数组范围，跳出循环
        while (i + len < nums1.length && j + len < nums2.length && nums1[i + len] === nums2[j + len]) {
          len++;
        }
        // 更新 max 为当前公共子数组的长度和 max 中的较大值
        max = Math.max(max, len);
      }
    }
  }

  return max;
}